GET请求和POST请求的区别,你还记得吗? |
您所在的位置:网站首页 › vue 发送请求携带cookie › GET请求和POST请求的区别,你还记得吗? |
我也不知道你记不记得这些知识点,反正我是忘了。 比较适合新人阅读 网上冲浪的时候看见有网友在问这个问题。想回答的时候发现。 做个笔记,复习一下。 GET和POST的区别 1.相对来说,POST请求更安全,GET请求不安全1.GET请求参数会直接挂载在URL上。POST请求携带的参数在URL上看不见。 2.POST请求记录不会被保存在浏览器历史或web服务器日志中。但是GET请求会。 当然,以上是相对的。这不表示POST请求就绝对安全,其实。 从数据传输的角度来说,POST和GET都不是很安全,因为http协议本身是明文传输。对内行人来说,抓包解析GET和POST都是一样的。 GET请求入参挂载在URL上,很容易被看见。如下 2.GET请求可以缓存,POST请求不能缓存GET请求一般用于数据和静态资源的获取,有些GET请求不用和数据库交互。比如一些静态资源和固定的字典表。所以可以使用缓存。 数据缓存👇(忘了从哪截的了) 静态资源缓存👇(来源百度网站) POST请求则更多用于数据的新增和修改。新增数据无法具备固定内容。所以很多浏览器都不支持缓存POST请求。 3.GET请求有长度限制,POST请求没有长度限制GET请求本身是没有长度限制的,但是URL有。不同的浏览器对于GET的长度限制也不一样。 IE:对IE浏览器URL的最大长度为2083个字符。 Firefox:对Firefox浏览器URL的最大长度为65536个字符。 Safari: 对Safari浏览器URL的最大长度为80000个字符。 Opera: 对Opera浏览器URL的最大长度为190000个字符。 Google(chrome):对Google浏览器URL的最大长度为8182个字符。 复制代码所以,在需要兼容IE的情况下,URL请求的长度最长只能有2083个字符。 4.GET只能传输字符串,POST可以传输多种类型数据因为GET请求是挂载在URL上的,所以传输的数据类型只能是字符串,但是POST请求可以传输除字符串以外的数据,比如:视频,声音,图片,文档等。 5.GET请求入参在URL上,POST请求入参在Request body上这是GET👇 这是POST 6.POST有可能产生两个数据包,GET只会发送一个数据包GET请求在任何情况下都会把http header和data一次性发送完成。 POST在部分情况下,(这取决于 浏览器/发送方 和它的版本),会产生两个数据包。第一个tcp发送header,确认服务器可以响应并且具备接受数据的能力,响应100。第二个TCP包在第一个请求成功(100后)才会发送。包含data。如果第一个请求(header)失败,则data不进行发送。 常规来说POST发送两次数据包在速度上会比GET慢,但其实在网络环境好的情况下这个速度影响微乎其微。但是在网络环境差的情况下。POST发送两次数据包可以很好的校验数据完整性。 并不是任何情况下POST都会有两个数据包 7.刷新和回退的时候GET请求无害,POST数据会被重新提交以前我一直没搞明白这一点区别的含义,怎么GET就无害了,POST就又会重新提交了。后来我明白了。 这点区别指向的是那些页面加载时候就默认执行的请求。 比如静态资源获取,刷新了就得重新加载吧。如果是GET,GET主要用重新获取数据,因为是获取,请求不会对数据产生什么危害,何况有时候还直接返回的缓存。所以无害。 再说POST,POST主要用于数据的修改/新增,针对默认执行的情况下,POST请求的每次执行都有可能改变数据库中的某一个值,比如文章的阅读量。刷新一下就+1(不信你刷一个试试)。所以这里说POST数据会被重新提交,这种提交他不一定有害,但确实不一定有用。 总结 POST请求相对安全,GET请求相对不安全 GET请求可以缓存,POST请求不能缓存 GET请求有长度限制,POST请求没有长度限制 GET只能传输字符串,POST可以传输多种类型数据 GET请求入参在URL上,POST请求入参在Request body上 POST有可能产生两个数据包,GET只会发送一个数据包 刷新和回退的时候GET请求无害,POST数据会被重新提交 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |